Method and system to process a data search request

ABSTRACT

Example systems and methods of processing a data search request are presented. In one example, a data search request including a plurality of constraints is received. Each of the plurality of constraints is of one of a plurality of constraint types. At least one of the plurality of constraints of a first constraint type is expanded to one or more constraints of at least one other constraint type. A plurality of search definitions is formulated utilizing the plurality of constraints. Each of the plurality of search definitions includes a unique constraint set excluding at least one of the plurality of constraints. A plurality of searches is performed using the plurality of search definitions to generate a plurality of search results. Data item counts corresponding to the search definitions are calculated. The data item counts and the corresponding search definitions are communicated to a client machine.

RELATED APPLICATION

The present patent application is a continuation application of U.S.patent application Ser. No. 11/238,643, titled “METHOD AND SYSTEM TOPROCESS A DATA SEARCH REQUEST,” filed Sep. 29, 2005, which is acontinuation application of International Application No.PCT/US2005/017024, titled “METHOD AND SYSTEM TO PROCESS A DATA SEARCHREQUEST,” filed May 16, 2005. Each of the abovementioned applications ishereby incorporated herein by reference in its entirety.

TECHNICAL FIELD

An embodiment relates generally to the technical field of searchautomation and, in one example embodiment, to a method and system toprocess a data search request.

BACKGROUND

A search engine is a tool that identifies data items in a data sourcebased on a data search request that is entered by a user. The searchengine utilizes keywords or other types of constraints entered by theuser to identify data items that are of interest to the user. Sometimesa search engine returns search results that include few if any dataitems because the data search request includes too many constraints. Insuch instances the user may remove constraints to increase the number ofdata items to returned; however, the user may not readily understandwhich constraints to remove because removing one constraint may resultin returning too many data items and removing another constraint mayresult in returning few if any data items.

BRIEF DESCRIPTION OF THE DRAWINGS

An embodiment of the present invention is illustrated by way of exampleand not limitation in the figures of the accompanying drawings, in whichlike references indicate similar elements and in which:

FIG. 1 is a network diagram depicting a system, according to one exampleembodiment of the present invention;

FIG. 2 is a block diagram illustrating a search system as embodied inthe information storage and retrieval platform, according to an exampleembodiment of the present invention;

FIG. 3 is a block diagram illustrating database tables, according to oneembodiment;

FIG. 4 is a block diagram illustrating a data item table, according toone embodiment;

FIG. 5A is a representation of a query, according to one embodiment;

FIG. 5B is a representation of search definitions, base queries and dataitem counters, according to one embodiment, generated in response to aquery 100;

FIG. 5C is a representation of an expansion, according to oneembodiment;

FIG. 6 is a block diagram illustrating a configuration table, astopwords table, a keyword expansion table, and a phrases table;

FIG. 7 is a block diagram illustrating a keyword cross type expansiontable, a category cross type expansion table, search parameter crosstype expansion table, and an attribute cross type expansion table;

FIG. 8 is a block diagram illustrating search tables according to oneembodiment, utilized to generate data item counters;

FIG. 9 is a block diagram of a reduced constraint builder module,according to one embodiment;

FIG. 10 is a flowchart illustrating a computer implemented method,according to one embodiment, to process a data search request;

FIG. 11 is a flowchart illustrating a method to receive a data searchrequest, according to one embodiment;

FIG. 12 is a flowchart illustrating a method, according to oneembodiment, to expand a constraint across types;

FIG. 13 is a flowchart illustrating a method, according to oneembodiment, to determine if reduced constraints are presented to theuser;

FIG. 14 is a flowchart illustrating a method to formulate searchdefinitions, according to one embodiment;

FIG. 15 is a flowchart illustrating a method, according to oneembodiment, to perform searches and calculate counts of data items,according to one embodiment;

FIG. 16 is a flowchart illustrating a method, according to oneembodiment, to generate bit maps and data item counters;

FIG. 17 is a flowchart illustrating a method, according to oneembodiment, to add the value of a data item counter to subset data itemcounters;

FIGS. 18-25 are representations of user interfaces, according to oneembodiment; and

FIG. 26 is a block diagram of a machine, according to one embodiment.

DETAILED DESCRIPTION

A method and system to process a data search request are described. Inthe following description, for purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present invention. It will be evident, however, toone skilled in the art that the present invention may be practicedwithout these specific details.

In general, embodiments described below feature a system that respondsto a user that has entered an over-constrained data search request. Thesystem responds by formulating and presenting a set of searchdefinitions each of which may exclude one or more of the constraintsfrom the original data search request and may be selected by the userfor execution as the next data search request. In addition, each of thesearch definitions may be associated with a calculated count of dataitems that enables the user to look ahead and anticipate the number ofdata items that would be returned responsive to execution of thecorresponding search definition. For example, a data item count of fiftymay indicate a data search request that returns a manageable number ofdata items. Presentation of search definitions as described above inconjunction with corresponding counts of data items enable the user tomake a thoughtful selection of next data search request.

FIG. 1 is a network diagram depicting a system 10, according to oneexample embodiment of the present invention, having a client-serverarchitecture. A platform, in the example form of an information storageand retrieval platform 12, provides server-side functionality, via anetwork 14 (e.g., the Internet) to one or more clients. FIG. 1illustrates, for example, a web client 16 (e.g., a browser, such as theINTERNET EXPLORER browser developed by Microsoft Corporation of Redmond,Washington State), and a programmatic client 18 executing on respectiveclient server machines 20 and 22.

Turning specifically to the information storage and retrieval platform12, an application program interface (API) server 24 and a web server 26are coupled to, and provide programmatic and web interfaces respectivelyto, one or more application servers 28. The application servers 28 mayhost a query controller module 32, a query builder module 38, and areduced constraint builder module 40. The application servers 28 are, inturn, shown to be coupled to one or more search intelligence back endservers 34 and one or more search back end servers 36. The searchintelligence back end servers 34 host an expansion module 30. The searchback end servers 36 host a search engine 42 and facilitates access to adata source 44.

The query controller module 32 acts a hub between the client servermachines 22 and 20 and the other search modules (e.g., expansion module30, query builder module 38, reduced constraint builder module 40 andsearch engine 42). To this end the query controller module 32communicates via the API server 24 and the web server 26 with the clientserver machines 22, 20 and communicates directly with the other searchmodules. The expansion module 30 expands constraints to captureadditional data items. The query builder module 38 determines whetherreduced constraints search definitions and counters may be presented tothe user. The reduced constraint builder module 40 builds a set ofsearch definitions that respectively exclude one or more constraints.The search engine 42 calculates data item counts and performs searcheson the data source 44.

While the system 10 shown in FIG. 1 employs a client-serverarchitecture, the present invention is of course not limited to such anarchitecture, and could equally well find application in a distributed,or peer-to-peer, architecture system. The expansion module 30, querycontroller module 32, query builder module 38, reduced constraintbuilder module 40 and search engine 42 (e.g., search modules) could alsobe implemented as standalone software programs, which do not necessarilyhave networking capabilities.

The web client 16, it will be appreciated, accesses the various servicesand functions provided by search modules via the web server 26 supportedby the web server 26. Similarly, the programmatic client 18 accesses thevarious services and functions provided by the search modules via theprogrammatic interface provided by the API server 24.

Search Architecture and Applications

FIG. 2 is a block diagram illustrating a search system 46 as embodied inthe information storage and retrieval platform 12, according to anexample embodiment of the present invention. The search system 46 ispresented to provide an overview of processing a data search request.

At operation 48 the client machine 20 communicates a data search requestto the query controller module 32. For example, the data search requestmay include the following keyword constraints “Harry,” “Potter,” and“Book.” The query controller module 32 modifies the data search requestto form a query according to proper syntax.

At operation 50 the query controller module 32 communicates the query tothe expansion module 30 which examines the keyword constraints forexpansion. For example, the keyword constraint “book” may be expanded toinclude a plural form of the word “book” (e.g., Book=(Book OR Books)).Other types of expansion may include alternate spellings, synonyms,acronyms, alternate word forms, etc. The expansion module 30 attempts toexpand all the keywords in the data search request and then, atoperation 52, communicates the modified query to the query controllermodule 32 which, in turn at operation 54, communicates the modifiedquery to the search engine 42. At operation 56, the search engine 42executes the query and communicates the results to the query controllermodule 32 which, at operation 58, communicates the results and themodified query to the query builder module 38. At operation 60 the querybuilder module 38 has determined that the data search request has beenover constrained (e.g., no or few data items returned) and communicatesthe results and the modified query to the reduced constraint buildermodule 40 which, in turn, generates the appropriate search definitionsbased on the modified query. At operation 62 the reduced constraintbuilder module communicates the search definitions to the search engine42 which determines a corresponding data item count for each searchdefinition. At operation 64 the search engine 42 communicates the dataitem counts or counters to the reduced constraint builder module 40which, in turn, sorts the search definitions and corresponding data itemcounts before communicating them to the query controller module 32.Finally, at operation 68, the query controller module 32 communicatesthe original search results, search definitions that excludeconstraints, and corresponding data item counters in the form of HTLMLresults to the user at the client machine 20.

The above exemplary overview described a data search request thatutilized keyword constraints; however, it will be appreciated that otherembodiments may describe a data search request that utilizes other typesof constraints including category constraints, search parameterconstraints and attribute constraints or combinations thereof asdescribed below.

FIG. 3 is a block diagram illustrating database tables 79, according toone embodiment. The exemplary database tables 79 are stored on the datasource 44 and include a data item table 80, a configuration table 112, astopwords table 114, a keyword expansion table 116, a phrases table 118and cross-type expansion tables 140, 142, 144, 146. The data item table80 is utilized to store and retrieve data items. The configuration table112 is utilized to store various configurable parameters that areutilized, by the search modules. The configurable parameters stored inthe configuration table 112 may be configured by an administrator oruser of the storage and information retrieval platform 12. The stopwordstable 114 may be utilized to identify one or more keywords that shouldbe removed from a data search request. The phrases table 118 isutilized, to identify sets of keywords that should be treatedatomically. The keyword expansion table 116 is utilized to expand akeyword constraint to other forms of the keyword constraint and thecross-type expansion tables 140, 142, 144, 146 are utilized to expandone type of constraint to another type of constraint.

FIG. 4 is a block diagram illustrating a data item table 80, accordingto one embodiment. The data item table 80 is shown to include multipledata items 82. Each data item 82 includes a domain 84, text 86,attributes 88, and search parameters 90. The domain 84 is utilized todistinguish types of data items 82. Example domains 84 may includebooks, toys, DVDs, etc. The text 86 contains words that may describe thedata item 82 or provide information relevant to the data item 82. Theattributes 88 provide descriptive information that may be utilized todistinguish data items 82 in the same domain 84. Each attribute 88includes an attribute identifier 92 that may be associated one or moreattribute values 94. For example a book may have an attribute identifier92 that describes the format of the book and the associated attributevalues may include “Hardback” or “Softback.” The search parameters 90provide descriptive information that may be utilized to characterize adata item 82 irrespective of the domain 84. In other words a common setof search parameters 90 may be applicable to all data items 82irrespective of the domain 84. Each search parameter 90 includes asearch parameter identifier 96 that may be associated with one or moresearch parameter values 98. For example, data items 82 may have a searchparameter identifier 96 that describes a sales format in which a dataitem 82 that is an item for sale may be transacted. The associatedsearch parameter value 98 may include “Buy it Now” or “Auction.”

FIG. 5A is a representation of a query 100, according to one embodiment.The query 100 is generated by the query controller module 32 from thedata search request. The data search request and query 100 include oneor more constraints 102 that may be utilized by the search engine 42 toidentify data items 82. Each constraint 102 may be characterized as akeyword constraint 104, an attribute constraint 106, a search parameterconstraint 108 and a category constraint 110, which is a type of searchparameter constraint 108. The keyword constraint 104 may be utilized toidentify data items 82 that contain matching text 86. The attributeconstraint 106 may be utilized to identify data items 82 that contain amatching attribute 88. The search parameter constraint 108 may beutilized to identify data items 82 that contain a matching searchparameter 90. The category constraint 110 may be utilized to identifydata items 82 that contain a matching category which is a type of searchparameter 90. FIG. 25 illustrates a user interface 97, according to oneembodiment, to enter constraints 102. The user interface 97 includes akeyword input box 115, a category identifier 117, a book finder 119, anda search parameter panel 121. The keyword input box 115 may be utilizedby a user to enter keyword constraints 104 (e.g., “Harry”, “Potter”,“book”, “goblet”). The category identifier 117 may be utilized to selectcategory constraints 110 (e.g., Books). In another embodiment browsing ahierarchy of categories may be utilized to select a category constraint110. The book finder 119 may be utilized to select attribute values 94associated with data items 82 in the “book” domain 84 (e.g., “England,“London”) and the search parameter panel 121 may be utilized to selectsearch parameter values 98 (e.g., “US $ Only”, “Buy It Now”, “$10” to“$20”.

FIG. 5B is a representation of search definitions 101, base queries 111and data item counters 103, according to one embodiment, generated inresponse to a query 100. The query 100 is shown to include attributeconstraints 106 (e.g., A1, A2), keyword constraints 104 (KW1, KW2), andsearch parameter constraints 108 (SP1, SP2). The query 100 may beutilized to generate a search parameter set 107, a keyword set 105 andan attribute set 109 of search definitions 101, base queries 111 anddata item counters 103. Each set 107, 105, 109 is associated with searchdefinitions 101 that systematically exclude constraints 102 of therespective type, base queries 111 that hold constant the remainingconstraints 102, and data item counters 103 indicating the number ofdata items 62 found in the data source 44 with the associated searchdefinition 101 and base query 111. The search definitions 101 are sortedfor presentation to the user according to set type 107, 105, 109 (e.g.,search definitions 101 associated with reduced search parameterconstraints 108 are presented first, search definitions 101 associatedreduced keyword constraints 104 are presented second and searchdefinitions 101 associated with reduced attribute constraints 108 arepresented third). Within each set type 107, 105, 109 the searchdefinitions 101 are sorted in ascending order according to the number ofexcluded constraints 102 (e.g., search definitions 101 with oneconstraint excluded, search definitions with two constraints 102excluded, etc.). Search definitions that include the same number ofexcluded constraints are sorted in ascending order according the numberof data items 82.

FIG. 5C is a representation of an expansion 113, according to oneembodiment. The expansion 113 includes a constraint 102 that may bemapped to an expression that includes the original constraint 102 andone or more additional constraint(s) 102 separated by OR operator(s).The expansion 113 is utilized to capture data items 82 that otherwisewould not have been captured with the original constraint 102 butprobably should have been captured from the point of view of the userthat entered the data search request. As previously discussed,expansions may be utilized to expand a keyword constraint 104 to pluralforms, alternate spellings, synonyms, acronyms, alternate word forms,etc. In addition, expansions may be utilized to expand across constrainttypes. For example, a keyword constraint 104 may be expanded to acategory constraint 110 or an attribute constraint 106 or a searchparameter constraint 108. Any constraint type may be expanded to anyother constraint type or any other combination of constraint types. Inaddition, a single constraint 102 may be expanded to multipleconstraints 102 of another type. For example, the keyword “dog” may beexpanded to the category “dogs” and the category “animals.”

FIG. 6 is a block diagram illustrating a configuration table 112, astopwords table 114, a keyword expansion table 116, and a phrases table118. The configuration table 112 includes fields for minimum constraints120, maximum constraints 122, minimum data items 124, maximum data items126, display columns 128 and display rows 130. The minimum constraints120 specify the minimum number of constraints 102 in a data searchrequest that are required to present search definitions 101 with reducedconstraints 102. The maximum constraints 122 specify the maximum numberof constraints 102 in a data search request that are required to presentsearch definitions 101 with reduced constraints 102. The minimum dataitems 124 and the maximum data items 126 specify a range of the numberof data items 82 that may be necessary to present search definitions 101with reduced constraints 102. The range of the number of data items 82may be compared with the number of data items 82 that are located, basedon executing the data search request without reducing constraints 102.The display columns 128 and display rows 130 specify the maximum numberof columns or rows that may be utilized on a user interface for thepresentation of search definitions, each row corresponding to a searchdefinition 101 in a list of constraint sets and each columncorresponding to a search definition 101 in a table of constraint sets.

The stopwords table 114 includes keyword constraints 104. The stopwordstable 114 may be utilized by the expansion module 30 to identify andremove keyword constraints 104 (e.g., and, the, is, etc.) from the query100.

The keyword expansion table 116 includes keyword constraints 104 which,if found within a query 100, are substituted for an expression 136. Theexpression 136 includes both the original keyword constraint 104, an“OR” logical operator and an additional keyword constraint 104. Theadditional keyword constraint 104 may include alternate spellings,alternate word forms, synonyms, acronyms. For example, the keywordconstraint 104 “book” may be expanded to include the expression (“book”OR “books”).

The phrases table 118 includes keyword constraints 104 which, if foundwithin a query 100, are substituted for the corresponding atomicexpression 138. The expansion module 30 utilizes the phrases table 118to recognize multiple keywords constraints 104 that should be treated asa single keyword constraint 104 or atomic expression. For example, aquery 100 that includes the keyword constraints 104 “Harry” and “Potter”may be treated as a single constraint 102, “Harry Potter.”

FIG. 7 is a block diagram illustrating a keyword cross type expansiontable 140, a category cross type expansion table 142, search parametercross type expansion table 144, and an attribute cross type expansiontable 146. The keyword cross type expansion table 140 includes a keywordconstraint 104 which corresponds to an expression that may include akeyword constraint 104 or a category constraint 110, or a searchparameter constraint 108 or an attribute constraint 106. The keywordcross type expansion table 136 enables the expansion of a keywordconstraint 104 to any of the other identified types of constraints 102.In addition, a keyword constraint 104 may be expanded to more than onecategory constraint 110 or more than one special parameter constraint108 or more than one attribute constraint 106. The remaining expansiontables 142, 144, 146 are utilized to perform similar types of expansionsfor the other types of constraints 102. Thus any constraint type may beexpanded to any other type constraint type and, further, any constrainttype may be expanded to multiple constraints 102 of the same type.

FIG. 8 is a block diagram illustrating search tables 148 according toone embodiment, utilized to generate data item counters 103. The searchtables 148 include a search definition table 150, search result tables152, 154, 156, and a bit map table 157 that includes bit maps 158. Thesearch definition table 150 includes a search definition identifier 159that may be associated with each search definition 101 and data itemcounter 103. The search definitions 101 or constraint sets are shown tosystematically exclude all permutations of the three constraints 102. Inone embodiment, each of the search definitions 101 may be executedagainst the data source 44 to determine the value of the respective dataitem counters 103. In another embodiment, the value of the data itemcounters 103 may be determined by executing a search for each constraint102 in the search definitions 101 (e.g., FIRST CONSTRAINT 102, SECONDCONSTRAINT 102, THIRD CONSTRAINT 102) and performing calculations. Inthe present example, the first constraint 102 may be utilized togenerate the search results table 152, the second constraint 102 may beutilized to generate the search results table 154 and the thirdconstraint 102 may be utilized to generate the search results table 156.In the present example, the search results table 152 includes data items82 one, four, and five and the search results table 154 includes dataitems 82 one, two, and six and the search results table 156 includesdata items one, three, four, and five. The search results tables 152,154, and 156 are utilized to generate bit maps 158 in the bit map table157 for each of the data items 82. Each example bit map 158 includes abit 163, 165, 167 that corresponds to the results of the respectiveexample search results tables 152, 154, 156. Another example may includeN search results tables 152, 154, 156, . . . , N that may correspond toN bits in each bit map 158. An asserted bit may indicate thecorresponding table 152, 154, 156 contains the data item 82. The bitmaps 158 are utilized to increment data item counters 103 in the searchdefinition table 150. For example, the data item counter 103corresponding to the first search definition 101 may be incremented foreach bit map that contains the value of “111” (e.g., data item 82 one).After all the bit maps 158 have been utilized to increment theappropriate data item counters 103 then data item counters 103 may beutilized to adjust the values of their respective subset data itemcounters 103. For example, the value of the data item counter 103associated with the first search definition 101 may be utilized toadjust the value of data item counters 103 associated with the second,third, fourth, fifth, sixth and seventh search definitions 101.Accordingly, the data item counters 103 associated with the second,third, fourth, fifth, sixth and seventh search definitions are eachincremented by the value contained in the data item counter 103associated with the first search definition 101. The following tableassociates data item counters 103 in the search definition table 150 totheir respective subset data item counters 103.

DATA ITEM SUBSET DATA ITEM COUNTER 103 COUNTERS 103 1 2, 3, 4, 5, 6, 7 25, 7 3 5, 6 4 6, 7 5 6 7

FIG. 9 is a block diagram of a reduced constraint builder module 40,according to one embodiment. The reduced constraint builder module 40generates search definitions 101 based on the query 100. The reducedconstraint builder module 40 includes a keyword module 162, an attributemodule 164 and a search parameter module 166 each of which are invokedresponsive to processing a single query 100 (e.g., a single data searchrequest). The keyword module 162, attribute module 164 and searchparameter module 166 may build search definitions 101 based on the query100. The keyword module 162, attribute module 164, and search parametermodule 166 may generate search definitions 101 that systematicallyremove constraints 102, as previously described.

FIG. 10 is a flowchart illustrating a computer implemented method 170,according to one embodiment, to process a data search request. Themethod 170 commences at operation 172 with the query controller module32 receiving a data search request from a client machine 2

FIG. 11 illustrates a method 174 to receive a data search request,according to one embodiment. At operation 176, the query controllermodule 32 receives the data search request which may be entered by auser at the client machine 20. FIG. 18 is an illustration of a userinterface 178, according to an embodiment, that may be utilized toreceive a keyword data search request. The user interface 178 includes adialogue box 180 to receive keywords constraints 104. The dialogue box180 is illustrated as receiving the keyword constraints 104 “Harry”,“Potter”, “book”, “goblet”, “fire”, “the”, and “potato.” Returning toFIG. 11, at operation 176, the query controller module 32 generates aquery 100 based on the data search request and communicates the query100 to the expansion module 30.

At decision operation 184, the expansion module 30 utilizes thestopwords table 114 to identify keyword constraints 104 contained in thequery 100. In the present example, a match on the keyword constraint 104“the” may be identified and a branch would be made to operation 186.Otherwise, a branch is made to decision operation 188. At operation 186,the expansion module 30 registers keyword constraints 104 that may beexcluded from search definitions 101. In the present example the word“the” may be identified to be excluded from search definitions 101.

At decision operation 188, the expansion module 30 utilizes the phrasestable 118 to determine if one or more predetermined sets of keywordconstraints 104 may be identified in the query 100. If one or morepredetermined sets of keyword constraints 104 may be identified, then abranch is made operation 190. Otherwise, a branch is made to operation192. In the present example, the expansion module 30 may determine thatthe query 100 includes the predetermined set of keyword constraints 104“Harry” and “Potter” and branch to operation 190.

At operation 190, the expansion module 30 registers the two keywordconstraints 104 as a single atomic constraint 138 (e.g. “Harry Potter”).

At operation 192, the expansion module 30 utilizes the keywordsexpansion table 116 to expand the keyword constraints 104 in the query100. In the present example, the keyword constraint 104 “book” may beidentified in the keyword expansion table 116 and expanded to anexpression that includes the word “books” (e.g., expression=(book ORbooks)).

At operation 194, the expansion module 30 utilizes the keyword expansiontable 116 to identify keyword constraints 104 in the query 100 that maybe associated with alternate spellings or alternate word forms. Ifkeyword constraints 104 are found, then an expression may be added tothe query that includes the original and alternate form.

At operation 196, the expansion module 30 utilizes the keywordsexpansion table 116 to identify keyword constraints 104 in the query 100that may be associated with synonyms and acronyms. If keywordconstraints 104 are found, then expressions may be added to the query100 that may include the original keyword constraint 104 and synonym oracronym keyword constraints 104.

At operation 198, the expansion module 30 utilizes the appropriate crosstype expansion table 140, 142, 144, 146 to identify constraints 102 thatmay be mapped to other types of constraints, as previously described. Inthe present example, the expansion module 30 may utilize the keywordcross type expansion table 140 to determine if any of the keywordconstraints 104 in the query 100 may be mapped to one or more attributeconstraints 104, one or more search parameter constraints 108, or one ormore category constraints 110 and if so, substituting the appropriateexpression from the keyword cross type expansion table 140.

At operation 200, the expansion module 30 communicates the modifiedquery 100 to the query controller module 32 which, in turn, communicatesthe modified query 100 to the search engine 42 which, in turn, executesthe modified query 100 against the data source 44. The search engine 42returns a result list to the query controller module 32 which, in turn,communicates the result list to the query builder module 38.

At decision operation 202, the query builder module 38 determines ifpresentation results in the form of search definitions 101 with reducedconstraints and data item counts 103 that correspond to the searchdefinitions 101 may be presented to the user with the original resultset. If the presentation results may be presented, then processingcontinues at operation 208 on FIG. 10. Otherwise, a branch is made tooperation 204.

At operation 204, the query builder module 38 returns the originalsearch results to the query controller module 32 which, in turn,generates and communicates the appropriate HTML back to the clientmachine 20 for presentation to the user.

Returning to FIG. 10, at operation 208, the reduced constraint buildermodule 40 formulates search definitions.

FIG. 14 is a flowchart illustrating a method 210 to formulate searchdefinitions, according to one embodiment. The method 210 commences atoperation 212 with the reduced constraint builder module 40 setting aconstraint counter to one.

At operation 213 the reduced constraint builder module 40 invokes thekeyword module 162 if keyword constraints 104 are present in the query100, the attribute module 164 if attribute constraints 106 are presentin the query 100, and the search parameter module 166 if searchparameter constraints 108 are present in the query. Each of therespective modules 162, 164, 166 may generate base queries 111, aspreviously described. Base queries 111 may generated based onconstraints 102 in the query 100 that are different from the namedmodule 162, 164, 166. For example, the keyword module 162 may not buildbase queries 111 in response to receiving a query 100 that includes onlykeyword constraints 104.

At operation 214, the reduced constraint builder module 40 invokes thekeyword module 162 if keyword constraints 104 are present in the query100, the attribute module 164 if attribute constraints 106 a present inthe query 100, and the search parameter module 166 if search constraints108 are present in the query. Each of the respective modules 162, 164,166 generate a set of search definitions 101 that excludes the number ofconstraints 102 specified by the constraint counter. For example, if theconstraint counter equals one, then search definitions 101 are generatedwith a single excluded constraint.

At decision operation 216, the reduced constraint builder module 40determines if a generated search definition 101 includes childconstraint 102 and an excluded corresponding parent constraint 102. Forexample, consider a search definition 101 that includes the childconstraint 102 “San Jose” and excludes the corresponding parentconstraint 102 “California.” If a generated search definition 101includes a child constraint and excludes a corresponding parentconstraint 102, then a branch is made to operation 218. Otherwise, abranch is made to operation 220.

At operation 218, the reduced constraint builder module 40 deletes thesearch definition 101. At operation 220, the reduced constraint buildermodule 40 increments the constraint counter.

At decision operation 222, the reduced constraint builder module 40determines if the constraint counter is greater than the maximum numberof constraints 122 as specified in the configuration table 112. If theconstraint counter is greater than the maximum number of constraints122, then a branch is made to operation 222. Otherwise, a branch is madeto decision operation 224.

At decision operation 224, the reduced constraint builder module 40determines if the constraints 102 in the query 100 are exhausted. If theconstraints 102 are exhausted, then a branch is made to operation 222.Otherwise, a branch is made to operation 214.

At operation 222, the reduced constraint builder module 40 communicatesthe search definitions 101 and corresponding base queries 111 to thesearch engine 42 and processing continues on FIG. 10 at operation 228.

Returning to FIG. 10, at operation 228, the search engine 42 performssearches and calculates counts of data items.

FIG. 15 is a flowchart illustrating a method 230, according to oneembodiment, to perform searches and calculate counts of data items inthe form of data item counters 103, according to one embodiment. Themethod 230 may be performed for keyword constraints 104, attributeconstraints 106, and search parameters constraints 108. For simplicitysake the method 230 will be described with respect to keywordconstraints 104; however, it will be appreciated that the followingdescription may also apply to attribute constraints 106, and searchparameter constraints 108. The method 230 commences at operation 232where the search engine 42 gets the first constraint 102 in the keywordsearch definition 101.

At decision operation 234, the search engine 42 determines if there is abase query 111. If there is a base query 111, then a branch is made tooperation 236. Otherwise, a branch is made to operation 238. The presentexample includes only keywords constraints 104; therefore, it is notassociated with a base query 111.

At operation 236, the search engine 42 combines the base query 111 andthe current search constraint 102 with an “AND” operator.

At operation 238, the search engine 42 queries the data source utilizingthe constraint 102 and possibly the base query 111 to generate aconstraint result.

At decision operation 240, the search engine 42 determines if there aremore keyword constraints 104 in the search definition 101. If there aremore keyword constraints 104 in the search definition 101, then a branchis made to operation 232. Otherwise, a branch is made to operation 242.

At operations 242 and 244, the search engine 42 generates bit maps 158for data items 82 in the constraint results, increments data itemcounters 103 based on the bit maps 158, and adds the values of the dataitem counters 103 to subsets of the respective data item counters 103.In sum, operations 242 and 244 describe the generation of the data itemcounters 103 associated with each of the search definitions 101.Operations 242 and 244 are more fully described on FIG. 16 and FIG. 17.

At operation 246, the search engine 42 communicates the data itemcounters 103 to the reduced constraint builder module 40.

At operation 248, the reduced constraint builder module 40 excludessearch definitions 101 that correspond to a data item counter 103 thatmay equal the number of data items 82 found with the original query. Inother words, a search definition 101 may not be returned to a user thatdoes not improve the over constrained condition (e.g., increase thenumber of data items 82 found).

At operation 250, the reduced constraint builder module 40 sorts thesearch definitions 101 and corresponding data item counters 103according to the type of reduced constraints (e.g., search parameterconstraints 108, keyword constraints 104, and attribute constraints106), the number of excluded constraints 102, and the value of the dataitem counters 103. For example, search parameter reduced constraints 106may appear first followed by keyword reduced constraints 104 followed byattribute reduced constraints 105 each according to an ascending numberof excluded constraints, the same number of excluded constraintsaccording to data items counters 161 with ascending values.

At operation 252, the reduced constraint builder module 40 communicatesthe search definitions 101 and the data item counters 103 to the querycontroller module 32 and processing continues on FIG. 10 at operation256.

Returning to FIG. 10, at operation 256, the query controller module 32utilizes the original search results and the presentation results in theform of the search definitions 101 and the data item counters 103 togenerate HTML that, in turn, is communicated in the form of a userinterface to the client machine 20. FIG. 19 illustrates a user interface258, according to one embodiment. The user interface 258 includes adialogue box 262, search definitions 101, and data item counters 103. Itwill be appreciated that the dialogue box 262 is shown to include theword “the” which is illustrated as excluded from the search definitions101 (e.g., a stopword). The search definitions 101 appear as a list ofconstraint sets and are sorted according to the number of constraintsexcluded and the number of data items 82 associated with correspondingsearch definition 101. The search definitions 101 also include an atomicconstraint 138 in the form of “Harry Potter”, which appears as a singlekeyword constraint 104 (e.g., the words “Harry” and “Potter” may alwaysbe excluded together “Harry Potter”). In one embodiment, the user at theclient machine 20 may select any of the search definitions 101 to listthe data items 82 that may be found based on the search definition 101.For example, a user may select a search definition 263, “Harry Potterbook goblet fire.”

FIG. 20 illustrates a user interface 264, according to one embodiment,illustrating the results of the selection of the search definition 263.The user interface 264 includes data items 82 and a search parameterpanel 266. The data items 82 were found responsive to the user selectinga search definition 101 that included the keyword constraints 104 “HarryPotter book goblet fire.” The search parameter panel 266 includescontrols that may be utilized by the user to further filter the dataitems 82 that appear on the user interface 264.

FIG. 21 is a user interface 270, according to one embodiment, to selectsearch parameters constraints 108 by utilizing a search parameter panel266. The search parameter panel 266 includes a currency search parameter274, a purchase format parameter 276, a price parameter 278, and a showitems button 280. The example selections illustrated on the searchparameter panel 266 indicate that the user has requested to filter dataitems 82 found with the keyword constraints “Harry Potter book goblet”to a subset of data items 82 that may be traded in US Dollars, purchasedimmediately (e.g., “Buy It Now”) and priced from $10 to $20.Accordingly, the user at the client machine 20 selects the show itemsbutton 280 thereby triggering processing previously described by themethod 170 on FIG. 10.

FIG. 22 is a user interface 282, according to an example embodiment ofthe present invention, illustrating search definitions 101 that excludesearch parameter constraints 108. User interface 282 includes searchdefinitions 101 that exclude search parameter constraints 108, a bookfinder 284 and a search parameter panel 288. The search definitions 101appear as a table of constraint sets with each column corresponding to asearch definition 101. It will be appreciated that the search definition101 that excludes the single search parameter constraint 108 “US $ Only”does not appear on the user interface 282 thereby illustrating theexclusion of a search definition 101 that is not associated with a countof data items 82 greater than the number of data items 82 found with theoriginal search. The book finder 284 may be utilized by the user tofurther filter on attributes constraints 106 of data items 82 in thedomain 84 “books.”

FIG. 23 illustrates a user interface 290, according to one embodiment,to find data items 82. The user interface 290 includes a categoryidentifier 294, a keyword input box 292, and a book finder 296, and asearch button 297. The category identifier 294 illustrates a selectionof the category “Books,” a search parameter constraint 108. The keywordinput box 292 illustrates that the user has input “Harry” and “Potter”keyword constraints 104. The book finder 296 illustrates that the userhas selected a parent attribute 298, (e.g., Publisher Country—England)and a child attribute 299, (e.g., Publisher City—London), attributeconstraints 106. Finally, the user at the client machine 20 selects thesearch button 297 thereby triggering processing previously described bythe method 170 on FIG. 10.

FIG. 24 illustrates a user interface 300, according to one embodiment,to display search definitions 101 that exclude constraints of mixedconstraint types. The user interface 300 includes search definitions302, 304, 306 and 308 which are presented as sorted according toconstraint types. For example, the search definition 302 excludes asearch parameter constraint 108 (e.g., Category: Books), the searchdefinition 304 excludes an atomic keyword constraint 104 (e.g., “HarryPotter”), and the search definitions 306 and 308 both exclude attributeconstraints 106 (e.g., “London” and “England”, “London”). Further, thesearch definitions 306 illustrate a parent child relationship betweenthe attribute constraints 106 “Publisher Country” and “Publisher City.”For example, a search definition that excludes “England” and includes“London” is not presented.

Expanding a Constraint Across Types

FIG. 12 is a method 310, according to one embodiment, to expand aconstraint across types. The method 310 commences at operation 311 wherethe expansion module 30 gets the next constraint from the query 100.

At decision operation 312, the expansion module 30 parses the query 100and determines if the first constraint 102 is a keyword constraint 104.If the first constraint 102 is a keyword constraint 104, then a branchis made to operation 314. Otherwise, a branch is made to decisionoperation 316. At operation 314, the expansion module 30 utilizes thekeyword cross type expansion table 140 to form an expression that “OR”sthe keyword constraint 104 to other type(s) of constraint(s) 102. Forexample, the keyword constraint 104 may be included in an expressionthat includes zero, one, or multiple category constraints 110, zero,one, or multiple search parameter constraints 108, and zero, one, ormultiple attribute constraints 106.

At decision operation 316, the expansion module 30 determines if theconstraint 102 is a category constraint 110. If the constraint 102 is acategory constraint 110, then a branch is made to operation 318.Otherwise, a branch is made to decision operation 320. At operation 318,the expansion module 30 utilizes the category cross type expansion table142 to form an expression that “OR”s the category constraint 110 toother type(s) of constraint(s) 102. For example, the category constraint110 may be included in an expression that includes zero, one, ormultiple keyword constraints 104, zero, one, or multiple searchparameter constraints 108, and zero, one, or multiple attributeconstraints 106.

At decision operation 320, the expansion module 30 determines if theconstraint 102 is a search parameter constraint 108. If the constraint102 is a search parameter constraint 108, then a branch is made tooperation 322. Otherwise, a branch is made to decision operation 324. Atoperation 322, the expansion module 30 utilizes the search parametercross type expansion table 144 to form an expression that “OR”s thesearch parameter constraint 108 to other type(s) of constraint(s) 102.For example, the search parameter constraint 108 may be included in anexpression that includes zero, one, or multiple category constraints110, zero, one, or multiple keyword constraints 104, and zero, one, ormultiple attribute constraints 106.

At decision operation 324, the expansion module 30 determines if theconstraint 102 is an attribute constraint 106. If the constraint 102 isan attribute constraint 106, then a branch is made to operation 326.Otherwise, a branch is made to decision operation 328. At operation 326,the expansion module 30 utilizes the attribute cross type expansiontable 146 to form an expression that “OR”s the attribute constraint 106to other type(s) of constraint(s) 102. For example, the attributeconstraint 106 may be included in an expression that includes zero, one,or multiple category constraints 110, zero, one, or multiple searchparameter constraints 108, and zero, one, or multiple keywordconstraints 104.

At decision operation 328, the expansion module 30 determines if thereare more constraints 102. If there are more constraints 102, then abranch is made to decision operation 312. Otherwise, processing ends.

FIG. 13 illustrates a method 340, according to one embodiment, todetermine if reduced constraints are presented to the user. The method340 commences at decision operation 342 where the query builder module38 determines if the number of data items 82 in the results from theoriginal query 100 may be greater than the minimum data items 124 in theconfiguration table 112. If the number of data items may not be greater,then a branch is made to operation 344. Otherwise, a branch is made todecision operation 346.

At decision operation 346, the query builder module 38 determines if thenumber of data items 82 in the original results may be less than themaximum data items 126 in the configuration table 112. If the number ofdata items may not be less than the maximum data items 126, then abranch is made to operation 344. Otherwise, a branch is made to decisionoperation 348.

At decision operation 348, the query builder module 38 determines if thenumber of constraints 102 in the query 100 may be greater than minimumconstraints 120 in the configuration table 112. If the number ofconstraints 102 may not be greater than the minimum, then a branch ismade to operation 344. Otherwise, a branch is made to decision operation350.

At decision operation 350, the query builder module 38 determines if thenumber of constraints 102 in the query 100 may not be less than themaximum constraints 122 in the configuration table 112. If the number ofconstraints 102 may not be less than the maximum constraints 122, then abranch is made to operation 344. Otherwise, a branch is made tooperation 352.

At operation 352, the method signals the presentation of reducedconstraints 102 and at operation 344 the method signals not to presentreduced constraints 102.

FIG. 16 is a flowchart of a method 360, according to one embodiment, togenerate bit maps 158 and data item counters 103. The method 360commences at operation 362 where the search engine 42 gets the nextconstraint result. At operation 363, the search engine 42 gets the nextdata item 82.

At decision operation 364, the search engine 42 determines if currentdata item 82 may be unidentified. If the current data item 82 isunidentified, then a branch is made to operation 366. Otherwise, abranch is made to decision operation 368.

At operation 366, the search engine 42 asserts the bit corresponding tothe current constraint 102 in the bit map 158 that corresponds to thecurrent data item 82.

At operation 370, the search engine 42 determines if the current dataitem 82 may be found in the remaining constraint results and, if found,the search engine 42 asserts the bit(s) that corresponds to therespective constraint results in the bit map 158.

At operation 372, the search engine 42 increments the data item counter103 based on the value of the bit map 158.

At decision operation 368, the search engine 42 determines if there maybe more data items 82 in the current constraint result. If there may bemore data items 82, then a branch is made to decision operation 364.Otherwise, a branch is made to decision operation 374.

At decision operation 374, the search engine 42 determines if there aremore constraint results. If there are more constraint results, then abranch is made to operation 362. Otherwise, the method 360 ends.

FIG. 17 is a flowchart illustrating a method 380, according to oneembodiment, to add the value of a data item counter 103 to subset dataitem counters 103. The method 380 commences at operation 382 where thesearch engine 42 gets the next data item counter 103.

At operation 384, the search engine 42 adds the value of the currentdata item counter 103 to subset data item counters 103 (e.g., data itemcounters 103 that may be included in a subset of the current data itemcounter 103).

At decision operation 386, the search engine 42 determines if there aremore data item counters 103. If there are more data item counters 103,then a branch is made to operation 382. Otherwise, the method 380 ends.

Embodiments of the above described system may provide technicaladvantages in the form of reduced network activity as a result ofautomatically generating search definitions 101 (e.g., data searchrequests) that may be selected by the user. In addition, otherembodiments of the above described system may provide technicaladvantages in the form of a reduction in the number of accesses to thedata source, the reduction of accesses due to calculating data itemcounters rather than executing queries against the data source.

FIG. 26 is a block diagram of a computer system, according to oneembodiment. The example computer system 400 or machine or platformincludes a processor 402 (e.g., a central processing unit (CPU) agraphics processing unit (CPU) or both), a main memory 404 and a staticmemory 406, which communicate with each other via a bus 408. Thecomputer system 400 may further include a video display unit 410 (e.g.,liquid crystal display (LCD) or a cathode ray tube (CRT)). The computersystem 400 also includes an alphanumeric input device 412 (e.g., akeyboard), a cursor control device 414 (e.g., a mouse), a disk driveunit 416, a signal generation device 418 (e.g., a speaker) and a networkinterface device 420.

The disk drive unit 416 includes a machine-readable medium 422 on whichis stored one or more sets of instructions (e.g., software 424)embodying any one or more of the methodologies or functions describedherein. The software 424 may also reside, completely or at leastpartially, within the main memory 404 and/or within the processor 402during execution thereof by the computer system 400, the main memory 404and the processor 402 also constituting machine-readable media.

The software 424 may further be transmitted or received over a network426 via the network interface device 420.

While the machine-readable medium 422 is shown in an example embodimentto be a single medium, the term “machine-readable medium” should betaken to include a single medium or multiple media (e.g., a centralizedor distributed database, and/or associated caches and servers) thatstore the one or more sets of instructions. The term “machine-readablemedium” shall also be taken to include any medium that is capable ofstoring, encoding or carrying a set of instructions for execution by themachine and that cause the machine to perform any one or more of themethodologies of the present invention. The term “machine-readablemedium” shall accordingly be taken to include, but not be limited to,solid-state memories, optical and magnetic media, and carrier wavesignals.

Thus, a method and system to process a data search request have beendescribed. Although the present invention has been described withreference to specific example embodiments, it will be evident thatvarious modifications and changes may be made to these embodimentswithout departing from the broader spirit and scope of the invention.Accordingly, the specification and drawings are to be regarded in anillustrative rather than a restrictive sense.

What is claimed is:
 1. A system comprising: at least one processor; andmemory comprising modules including instructions executable by the atleast one processor, the modules comprising: a query controller moduleto receive a data search request including a plurality of constraints,each of the plurality of constraints being of one of a plurality ofconstraint types; a reduced constraint builder module to expand at leastone of the plurality of constraints of a first constraint type to one ormore constraints of at least one other constraint type, and to formulatea plurality of search definitions, each of the search definitions beingformulated utilizing the plurality of constraints after expansion, eachof the plurality of search definitions comprising a unique constraintset excluding at least one of the plurality of constraints afterexpansion; and a search engine to perform a plurality of searches of adata source using the plurality of search definitions to generate aplurality of search results and to utilize the plurality of searchresults to calculate a plurality of counts of data items thatrespectively correspond to the plurality of search definitions; thequery controller module to communicate the plurality of counts of dataitems and the corresponding plurality of search definitions to a clientmachine.
 2. The system of claim 1, the data items representing aplurality of items available via an online marketplace, the data searchrequest comprising a search request for at least one of the plurality ofitems available via the online marketplace.
 3. The system of claim 1,the plurality of constraint types comprising a keyword constraint type,a keyword constraint of the keyword constraint type to identify dataitems that include descriptive text that matches the keyword constraint.4. The system of claim 1, the plurality of constraint types comprising acategory constraint type, a category constraint of the categoryconstraint type to identify data items that belong to an item categorythat matches the category constraint.
 5. The system of claim 1, theplurality of constraint types comprising a search parameter constrainttype, a search parameter constraint of the search parameter constrainttype to identify data items that include a parameter value that matchesthe parameter constraint, the parameter value characterizing the dataitems irrespective of item categories.
 6. The system of claim 1, theplurality of constraint types comprising an attribute constraint type,an attribute constraint of the attribute constraint type to identifydata items that include an attribute value that matches the attributeconstraint, the attribute value distinguishing the data items within aparticular item category.
 7. The system of claim 1, the first constrainttype comprising a keyword constraint type, and the at least one otherconstraint type comprising at least one of a category constraint type, asearch parameter constraint type, and an attribute constraint type. 8.The system of claim 1, the first constraint type comprising a categoryconstraint type, and the at least one other constraint type comprisingat least one of a keyword constraint type, a search parameter constrainttype, and an attribute constraint type.
 9. The system of claim 1, thefirst constraint type comprising a search parameter constraint type, andthe at least one other constraint type comprising at least one of acategory constraint type, a keyword constraint type, and an attributeconstraint type.
 10. The system of claim 1, the first constraint typecomprising an attribute constraint type, and the at least one otherconstraint type comprising at least one of a category constraint type, akeyword constraint type, and a search parameter constraint type.
 11. Thesystem of claim 1, the reduced constraint builder module to expand theat least one of the plurality of constraints of the first constrainttype to more than one constraint of one of the other constraint types.12. The system of claim 1, the reduced constraint builder module toexpand the at least one of the plurality of constraints of the firstconstraint type to at least one constraint of more than one of the otherconstraint types.
 13. The system of claim 1, each of the plurality ofsearch definitions being selectable by a user to display the data itemsassociated with the selected search definition.
 14. The system of claim1, the query controller module to communicate each search definition toidentify at least one of the plurality of constraints that have beenexcluded from the respective search definition.
 15. A method comprising:receiving a data search request including a plurality of constraints,each of the plurality of constraints being of one of a plurality ofconstraint types; expanding, using at least one processor of a machine,at least one of the plurality of constraints of a first constraint typeto one or more constraints of at least one other constraint type;formulating a plurality of search definitions utilizing the plurality ofconstraints after expansion, each of the plurality of search definitionscomprising a unique constraint set excluding at least one of theplurality of constraints after expansion; performing a plurality ofsearches of a data source using the plurality of search definitions togenerate a plurality of search results; calculating, utilizing theplurality of search results, a plurality of counts of data items thatrespectively correspond to the plurality of search definitions; andcommunicating the plurality of counts of data items and thecorresponding plurality of search definitions to a client machine. 16.The method of claim 15, the first constraint type comprising a keywordconstraint type, a keyword constraint of the keyword constraint type toidentify data items that include descriptive text that matches thekeyword constraint.
 17. The method of claim 15, the first constrainttype comprising a category constraint type, a category constraint of thecategory constraint type to identify data items that belong to an itemcategory that matches the category constraint.
 18. The method of claim15, the first constraint type comprising a search parameter constrainttype, a search parameter constraint of the search parameter constrainttype to identify data items that include a parameter value that matchesthe parameter constraint, the parameter value characterizing the dataitems irrespective of item categories.
 19. The method of claim 15, thefirst constraint type comprising an attribute constraint type, anattribute constraint of the attribute constraint type to identify dataitems that include an attribute value that matches the attributeconstraint, the attribute value distinguishing the data items within aparticular item category.
 20. A non-transitory machine-readable storagemedium comprising instructions that, when executed by at least oneprocessor of a machine, cause the machine to perform operationscomprising: receiving a data search request including a plurality ofconstraints, each of the plurality of constraints being of one of aplurality of constraint types; expanding at least one of the pluralityof constraints of a first constraint type to one or more constraints ofat least one other constraint type; formulating a plurality of searchdefinitions utilizing the plurality of constraints after expansion, eachof the plurality of search definitions comprising a unique constraintset excluding at least one of the plurality of constraints afterexpansion; performing a plurality of searches of a data source using theplurality of search definitions to generate a plurality of searchresults; calculating, utilizing the plurality of search results, aplurality of counts of data items that respectively correspond to theplurality of search definitions; and communicating the plurality ofcounts of data items and the corresponding plurality of searchdefinitions to a client machine.